﻿Public Class CLabelCheckState2 : Inherits CStateBase

    ''' <summary>
    ''' 実行可能かを判断する
    ''' </summary>
    ''' <param name="task"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function IsEnter(ByVal task As CTaskBase) As Boolean
        Debug.WriteLine("CLabelCheckState.IsEnter")
        If CCommon.isInStr(task.ActionCd, "LABEL", "CHNG") Then
            Return True
        Else
            Return False
        End If
    End Function

    ''' <summary>
    ''' 実行メソッド
    ''' </summary>
    ''' <param name="task"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function DoExecute(ByVal task As CTaskBase) As CStateBase
        Debug.WriteLine("CLabelCheckState..DoExecute.START")
        Dim nextState As CStateBase = Nothing
        Dim pdaTask As CPDATask2 = DirectCast(task, CPDATask2)
        Dim webMng As CWebManager = CWebManager.GetInstance
        Dim AppManager As CApplicationManager = CApplicationManager.GetInstance
        Dim checkLblData As CCheck = CCheck.GetIns

        Dim StateDao As CMasterDAO = New CMasterDAO
        Dim app As CApplication = CApplication.GetInstance()
        Dim sql As CSQLite = app.MasterDB()
        Dim trx As CTransaction = sql.GetTransaction
        Try
            If task.ProcessText = "" Then
                If CCommon.FlagManage("AUTO_START") Then
                    pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_066, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                Else
                    If pdaTask.MsgText <> "" Then
                        pdaTask.MsgText = "次:" & pdaTask.MsgText & vbCrLf & "を読んでください。"
                        pdaTask.WindowManager.SetMessage(pdaTask.MsgText, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                    Else
                        If CCommon.FlagManage("ORDER_COMMIT") And AppManager.m_AppSetting.LblCmbFlg Then
                            pdaTask.WindowManager.SetMessage("照合する注文を選んでください。", CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                        Else
                            pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_031, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                        End If

                    End If
                End If

                '待つ状態
                task.ProcessText = task.ReadTextWait(-1)
                'CFileLog.WriteLog("バーコード読む時間:" & pdaTask.timeMill)
                '自動同期化が
                'If task.ProcessText.StartsWith(CConst.CNS_AUTO_INSERT) Then
                '    自動同期化中INSERTが実行されたものを()
                '    新しいDBでまた、INSERTをする
                '    Try
                '        SyncLock pdaTask.SendLockObject
                '            If pdaTask.INSERT_LIST.Count > 0 Then
                '                For i As Integer = 0 To pdaTask.INSERT_LIST.Count - 1
                '                    CFileLog.WriteLog("同期化中のINSERT文:" & pdaTask.INSERT_LIST(i))
                '                Next
                '                trx.UpdateSQLArray(pdaTask.INSERT_LIST)
                '            Else
                '                CFileLog.WriteLog("同期化中のINSERTない----")
                '            End If
                '        End SyncLock

                '        もう一度接続()
                '        CFileLog.WriteLog("DB再接続---")
                '        SyncLock pdaTask.SendLockObject
                '            'sql.RelaseTransaction(trx)
                '            app = CApplication.GetInstance()
                '            sql = app.MasterDB()
                '            trx = sql.GetTransaction
                '        End SyncLock

                '        'コピーする前
                '        '現在出荷指示書をバックアップ
                '        SyncLock pdaTask.SendLockObject
                '            Dim retCnt As CResultSet = trx.SelectSQL("select count(*) as cnt from shiporder_tbl")
                '            If retCnt.GetInt("cnt") = 0 Then
                '                CFileLog.WriteLog("同期化のREPORT_INSERT--START")
                '                trx.UpdateSQLArray(pdaTask.REPORT_LIST)
                '                CFileLog.WriteLog("同期化のREPORT_INSERT--END")
                '            Else
                '                CFileLog.WriteLog("同期化のREPORT_INSERT--なし")
                '            End If
                '            retCnt.Close()
                '        End SyncLock

                '        SyncLock pdaTask.SendLockObject
                '            CFileLog.WriteLog("エラー落ちるかもー１３")
                '            Dim autoUpdate As CResultSet = trx.SelectSQL("select order_cd, sum(action_qty) as action_qty from orderdata_detail group by order_cd")
                '            CFileLog.WriteLog("select order_cd, sum(action_qty) as action_qty from orderdata_detail group by order_cd")
                '            While autoUpdate.Read
                '                Dim upOrderCd As String = autoUpdate.GetString("order_cd")
                '                Dim upActionQty As Integer = autoUpdate.GetInt("action_qty")
                '                trx.UpdateSQL("update shiporder_tbl set action_qty=" & upActionQty & " where order_cd='" & upOrderCd & "'")
                '                CFileLog.WriteLog("update shiporder_tbl set action_qty=" & upActionQty & " where order_cd='" & upOrderCd & "'")
                '            End While
                '        End SyncLock

                '        SyncLock pdaTask.SendLockObject
                '            pdaTask.WindowManager.SetPageSp(pdaTask.OrderCd)
                '        End SyncLock
                '        pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_031, CConst.COLOR_BLACK, CConst.COLOR_GREEN)

                '        CCommon.FlagManage("AUTO_START", False)
                '        CFileLog.WriteLog("同期化END----------")
                '        pdaTask.WindowManager.SetPageSp(pdaTask.OrderCd)
                '    Catch ex As Exception
                '        CFileLog.WriteLog("同期化中エラー----------:" & ex.Message)
                '        CFileLog.WriteLog("同期化中エラー----------また、ロジックをSTART")
                '    End Try

                '    task.ProcessText = ""
                '    task.ActionCd = "LABEL"
                '    nextState = GetNextState(task)
                '    Return nextState

                'ElseIf task.ProcessText.StartsWith(CConst.AUTO_UPDATE_START) Then
                '    CFileLog.WriteLog("同期化START----------")
                '    pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_066, CConst.COLOR_BLACK, CConst.COLOR_GREEN)

                '    CCommon.FlagManage("AUTO_START", True)
                '    If CCommon.FlagManage("AUTO_START") Then
                '        CFileLog.WriteLog("同期化START----------AUTO_START--START")
                '    End If

                '    task.ProcessText = ""
                '    task.ActionCd = "LABEL"
                '    nextState = GetNextState(task)
                '    Return nextState

                'End If

                '削除するべきリストがあれば削除---10.09.01--修正---START
                If pdaTask.DelOrderData.Count > 0 Then
                    Dim delOrderCd As String = ""
                    For j As Integer = 0 To pdaTask.DelOrderData.Count - 1
                        Dim strRecord As COrderRecord = pdaTask.DelOrderData(j)
                        'pdaTask.WindowManager.DelRecord(pdaTask.DelOrderData(j), True)
                        strRecord.Visible = False
                        delOrderCd = strRecord.OrderCd

                        pdaTask.WindowManager.DelRecord(strRecord, True)
                        '選択した内容を初期化
                        CPersonal.initPdaTaskSetting(pdaTask)
                        'MessageBox.Show("初期化後：" & pdaTask.Setting_SysItemCd)
                        pdaTask.OrderCd = ""
                        Exit For
                    Next
                    pdaTask.DelOrderData.Clear()

                    '終わってるものを選択したとき
                    If task.ProcessText.StartsWith(CConst.CNS_ORDERCD_HEAD) Then
                        Dim strOdr As String = task.ProcessText.Replace(CConst.CNS_ORDERCD_HEAD, "")
                        If strOdr = delOrderCd Then
                            CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                  Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_061, Color.White)

                            task.ProcessText = ""
                            task.ActionCd = "LABEL"
                            nextState = GetNextState(task)
                            Return nextState

                        End If
                    End If
                End If
                '削除するべきリストがあれば削除---10.09.01--修正---END
            End If


            'ページ移動したとき
            If task.ProcessText.StartsWith(CConst.CNS_PAGE_RESET) Then
                If Not pdaTask.OrderCd = "" Then
                    For h As Integer = 0 To pdaTask.WindowManager.GetRecordCount - 1
                        Dim record As COrderRecord = pdaTask.WindowManager.GetRecord(h)
                        If record.OrderCd = pdaTask.OrderCd Then
                            pdaTask.WindowManager.SelectOrder(pdaTask.OrderCd)
                            Exit For
                        End If
                    Next
                End If
                task.ProcessText = ""
                task.ActionCd = "LABEL"
                nextState = GetNextState(task)
                Return nextState
            End If

            'リストから選んだらODR-で注文番号が来る
            'ラベル照合じゃない場合
            If task.ProcessText.StartsWith(CConst.CNS_ORDERCD_HEAD) And Not AppManager.m_AppSetting.LblCmbFlg Then
                'MessageBox.Show("ENTER")
                Debug.WriteLine("画面で注文が選択された！！！！！")
                'ODR-を削除して注文番号を設定する
                task.ProcessText = task.ProcessText.Replace(CConst.CNS_ORDERCD_HEAD, "")
                'MessageBox.Show("task.ProcessText :" & task.ProcessText)
                CCommon.FlagManage("SHOUGO_USED", True)

                If CCommon.FlagManage("MULTI_ORDER") Then
                    task.ActionCd = "INNER_LABEL"
                    pdaTask.MsgText = ""
                    '完全に照合成功
                    pdaTask.Hardware.nextC()
                    'actionボタンも消す
                    pdaTask.WindowManager.ClearActionLabel()

                    CCommon.FlagManage("MULTI_ORDER", False)
                    nextState = GetNextState(task)
                    Return nextState
                Else
                    'もし、前選択した注文をまた選択したときは選択解除
                    Dim logicFlg As Boolean = False
                    If Not pdaTask.OrderCd = "" Then
                        If pdaTask.OrderCd <> task.ProcessText Then
                            If CCommon.FlagManage("SHOUGO_USED") Then
                                '解除
                                CCommon.FlagManage("SHOUGO_USED", False)
                                'エラー->設定ファイルによってエラー表示
                                If AppManager.m_AppSetting.ErrorChk Then
                                    'CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                    '                   Color.White, CConst.EnumSound.ERR_BUZZ, CConst.CNS_MSG_065, Color.Red)
                                    CPersonal.ErrorProc(pdaTask, CConst.ERR_MSG015)

                                    Debug.WriteLine("エラー表示02")
                                    'CPersonal.ErrorLock2(pdaTask)
                                    'エラーになったら全部照合中のデータは全部戻す（初期化）
                                Else
                                    CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                                        Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_065, Color.White)
                                    'CPersonal.ErrorLock2Release(pdaTask)
                                End If

                                '選択した内容を初期化
                                CPersonal.initPdaTaskSetting(pdaTask)

                                task.ProcessText = ""
                                task.ActionCd = "LABEL"
                                nextState = GetNextState(task)
                                Return nextState
                            Else
                                'pdaTask.WindowManager.Unselect()
                                'MessageBox.Show("初期化前：" & pdaTask.Setting_SysItemCd)
                                '選択した内容を初期化
                                CPersonal.initPdaTaskSetting(pdaTask)
                                'MessageBox.Show("初期化後：" & pdaTask.Setting_SysItemCd)
                                logicFlg = True
                            End If
                        End If
                    Else
                        logicFlg = True
                    End If
                    If logicFlg Then
                        '選択されない状態
                        '注文番号
                        pdaTask.OrderCd = task.ProcessText

                        'データベースに見に行くようにSTART---->
                        Dim orderflg As Boolean = True

                        For f As Integer = 0 To pdaTask.WindowManager.GetRecordCount - 1
                            Dim shpOrderData As COrderRecord = pdaTask.WindowManager.GetRecord(f)

                            If pdaTask.OrderCd = shpOrderData.OrderCd Then
                                pdaTask.ShiporderCd = shpOrderData.ShiporderCd
                                pdaTask.RowNum = shpOrderData.RowNum
                                pdaTask.ShiporderQty = shpOrderData.ShiporderQty
                                pdaTask.SysitemCd = shpOrderData.SysItemCd
                                pdaTask.ItemCd = shpOrderData.ItemCd
                                pdaTask.ItemName = shpOrderData.ItemName
                                pdaTask.ReportCd = shpOrderData.ReportCd

                                pdaTask.Record1 = shpOrderData.Record1
                                pdaTask.Record2 = shpOrderData.Record2
                                pdaTask.Record2 = shpOrderData.Record3

                                pdaTask.SubinvoiceCd1 = shpOrderData.SubinvoiceCd1
                                pdaTask.SubinvoiceCd2 = shpOrderData.SubinvoiceCd2
                                pdaTask.SubinvoiceCd3 = shpOrderData.SubinvoiceCd3
                                pdaTask.SubinvoiceCd4 = shpOrderData.SubinvoiceCd4

                                orderflg = False
                                Exit For
                            End If
                        Next
                        If orderflg Then
                            SyncLock pdaTask.SendLockObject
                                pdaTask.WindowManager.SetPage(pdaTask.OrderCd)
                            End SyncLock

                        Else
                            pdaTask.WindowManager.SelectOrder(pdaTask.OrderCd)
                        End If
                    End If

                    task.ActionCd = "LABEL"
                    task.ProcessText = ""
                    nextState = GetNextState(task)
                    Return nextState
                End If

                '機能追加 10.09.03 修正-------START---LEE
                '絞るリストを取り消し
            ElseIf task.ProcessText = CConst.CNS_CLR Or task.ProcessText = CConst.CNS_SELECT_CLR Then
                '初期化
                pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_031, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                'pdaTask.WindowManager.ChangeWindowMode(prevWindowMode)

                CCommon.FlagManage("MULTI_ORDER", False)
                '初期化
                CPersonal.initPdaTaskSetting(pdaTask)
                'リスト画面に戻る
                pdaTask.WindowManager.ChangeWindowMode(EnumWindowMode.LIST_MODE)
                'actionボタンも消す
                pdaTask.WindowManager.ClearActionLabel()
                '画面の選択解除
                pdaTask.WindowManager.Unselect()

                task.ActionCd = "LABEL"
                task.ProcessText = ""
                nextState = GetNextState(task)
                Return nextState
                '機能追加 10.09.03 修正-------END---LEE


                '取消モードに入る
            ElseIf task.ProcessText.StartsWith(CConst.CANCEL_OK) Then

                'actionボタンも消す
                pdaTask.WindowManager.ClearActionLabel()
                '選択した内容を初期化
                CPersonal.initPdaTaskSetting(pdaTask)

                task.ActionCd = "CANCEL"
                task.ProcessText = ""
                nextState = GetNextState(task)
                Return nextState

                '途中送信ボタン押した
            ElseIf task.ProcessText.StartsWith(CConst.CNS_SEND) Then

                If CPersonal.ConfirmWindow2(pdaTask, EnumWindowMode.YESNO_MODE, Color.Black, _
                                              CConst.EnumSound.YESNO_BUZZ, CConst.CNS_MSG_026, Color.White) Then

                    pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_055, CConst.COLOR_BLACK, CConst.COLOR_GREEN)

                    'データベース検索してデータ送信
                    CPersonal.AllDataSend(trx, pdaTask)
                    ''追加10.09.15 LEE 実績の送信----END
                    Debug.WriteLine("途中送信終わってから照合また始まるように")

                End If

                task.ActionCd = "LABEL"
                task.ProcessText = ""
                nextState = GetNextState(task)
                Return nextState

                'pdaTask.WindowManager.BaseRelease()
                'pdaTask.WindowManager.CloseWindow()

                '終了コード読むとき
            ElseIf task.ProcessText.StartsWith(CConst.CNS_END_LABEL) Then

                pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_023, CConst.COLOR_BLACK, CConst.COLOR_GREEN)

                'データベース検索してデータ送信
                CPersonal.AllDataSend(trx, pdaTask)

                'メモリに保存されたデータも消す
                checkLblData.InsertOk()

                '初期化
                CPersonal.initPdaTaskSetting(pdaTask)

                '自動受信したデータを消す
                trx.UpdateSQL("delete from shiporder_tbl")

                Debug.WriteLine("終了コード読みました。")
                'CPersonal.shpOrderDataSend(pdaTask)

                pdaTask.WindowManager.BaseRelease()
                pdaTask.WindowManager.CloseWindow()

            ElseIf task.ProcessText.StartsWith(CConst.CNS_BARCD_SHIPGROUP) Or task.ProcessText.StartsWith(CConst.CNS_SHIPREPORT) _
                        Or task.ProcessText.StartsWith(CConst.CNS_UNSHIPGROUP) Or task.ProcessText.StartsWith(CConst.CNS_UNSHIPREPORT) Then

                CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                            Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_060, Color.White)

                task.ActionCd = "LABEL"
                task.ProcessText = ""
                nextState = GetNextState(task)
                Return nextState


            End If

            'バーコードタイプチェック--------------------------------------->>>>>>>>START
            ''ラベル照合　->　出荷照合パタン======================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            If AppManager.m_AppSetting.LblCmbFlg Then

                'MessageBox.Show("LABEL_INNER_CHECK---SETTING")
                task.ActionCd = "LABEL_INNER_CHECK"
                nextState = GetNextState(task)
                Return nextState

            Else
                '読んだバーコード
                'バーコードタイプチェック--------------------------------------->>>>>>>>START
                'CFileLog.WriteLog("バーコードタイプチェック---START")
                Dim barcdType As String = StateDao.CheckBarCdType(trx, task.ProcessText)
                'MessageBox.Show("barcdType:" & barcdType)
                pdaTask.barcdType = barcdType
                pdaTask.labelData = task.ProcessText
                '読んだラベルが不明なものの場合エラーにする
                If barcdType = "" Then
                    'エラー->設定ファイルによってエラー表示
                    If AppManager.m_AppSetting.ErrorChk Then
                        'CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                        '                    Color.White, CConst.EnumSound.ERR_BUZZ, CConst.CNS_MSG_056, Color.Red)
                        ''Debug.WriteLine("エラー表示02")
                        'CPersonal.ErrorLock2(pdaTask)
                        CPersonal.ErrorProc(pdaTask, CConst.CNS_MSG_056)
                        'エラーになったら全部照合中のデータは全部戻す（初期化）
                    Else
                        CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                            Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_056, Color.White)
                        'CPersonal.ErrorLock2Release(pdaTask)
                    End If
                    'Debug.WriteLine("LABEL_CHECK")
                    task.ActionCd = "LABEL"
                    task.ProcessText = ""
                    nextState = GetNextState(task)
                    Return nextState

                End If
                'Debug.WriteLine("CVALUE_CHECK 7")
                Dim barcdInfo As ArrayList = StateDao.GetBarcdInfo(trx, barcdType)

                'MessageBox.Show("START_Count:" & pdaTask.LabelCount)
                '読んだバーコードの情報をセット-->>
                'pdaTask.SearchBarcdInfoがセットされるSTART
                'CFileLog.WriteLog("First パタンcount:" & pdaTask.LabelCount)

                '実際のこのラベル読まないと実績数量が上がらない
                Dim countFlg As CResultSet = Nothing 'StateDao.GetNextNmCResult(trx, barcdType, pdaTask.LabelCount, "2")

                '照合パタンが複数であれば
                'MessageBox.Show("patternCount:" & pdaTask.PatternList.Count)
                If pdaTask.PatternList.Count = 0 Or pdaTask.PatternList.Count > 1 Then
                    countFlg = StateDao.GetNextNmCResult(trx, barcdType, pdaTask.LabelCount, "2")
                ElseIf pdaTask.PatternList.Count Then
                    'MessageBox.Show("新取り方")
                    countFlg = StateDao.GetNextNmCResult2(trx, barcdType, pdaTask.LabelCount, "2", pdaTask.PatternList(0))
                End If



                'MessageBox.Show("TYPE:" & barcdType)
                'MessageBox.Show("countFlg.lbl_count:" & countFlg.GetString("lbl_count"))
                pdaTask.CountFlg = countFlg.GetString("count_key")
                'MessageBox.Show("pdaTask.CountFlg::" & pdaTask.CountFlg)
                Dim selectCaseInt As Integer = CPersonal.ChkBarcdInfoSearch(pdaTask, barcdInfo, barcdType, task.ProcessText)
                Select Case selectCaseInt
                    Case 0
                        If CCommon.FlagManage("INSERT_FLG") Then
                            CCommon.FlagManage("INSERT_FLG", False)
                        End If
                        '普通パース
                    Case Else

                        'MessageBox.Show("selectCaseInt::" & selectCaseInt)
                        '一回照合が行ってから違うパタンのラベル読んだら
                        '再セットするように
                        If CCommon.FlagManage("INSERT_FLG") Then
                            'MessageBox.Show("一回INSERT終わったから")
                            CCommon.FlagManage("INSERT_FLG", False)
                            'CFileLog.WriteLog("SETが終わった後の照合---->>>")
                            CPersonal.initPdaTaskSetting(pdaTask)
                            Dim selectCaseInt2 As Integer = CPersonal.ChkBarcdInfoSearch(pdaTask, barcdInfo, barcdType, task.ProcessText)
                            Select Case selectCaseInt2
                                Case 0
                                Case Else
                                    'エラーの場合
                                    Return GetNextState(CPersonal.ErrorPage(pdaTask, selectCaseInt, task))
                            End Select
                        Else
                            'エラーの場合
                            Return GetNextState(CPersonal.ErrorPage(pdaTask, selectCaseInt, task))
                        End If
                End Select
                'CFileLog.WriteLog("バーコードタイプチェック---END")
                'pdaTask.SearchBarcdInfoがセットされるEND
                '読んだバーコードの情報をセット-->>

                'ユニークコードチェック---------------->>ユニークチョー度チェック--START
                If pdaTask.UniqueCd <> "" Then
                    'ユニークコードチェック
                    Dim uniData As CResultSet = StateDao.CheckUniqueCd(trx, pdaTask.UniqueCd)
                    '存在すればエラー
                    If uniData.GetString("unique_cd") <> "" Then
                        '設定ファイルでunique_stateがNの場合は通る
                        Dim uniState As CResultSet = StateDao.GetBarcdUniState(trx, barcdType)
                        If uniState.GetString("unique_state") = "Y" Then
                            'ユニークコード存在
                            Dim empName As String = StateDao.GetEmpName(trx, uniData.GetString("emp_cd"))
                            Dim readTime As String = uniData.GetString("action_datetime")
                            Dim readYear As String = readTime.Substring(2, 2)
                            Dim readMonth As String = readTime.Substring(5, 2)
                            Dim readDay As String = readTime.Substring(8, 2)

                            If pdaTask.CountFlg = "Y" And pdaTask.SearchBarcdInfo.ActionQty > 0 Then
                                'ユニークコードと一緒に取り消される
                                pdaTask.ActionQty -= pdaTask.SearchBarcdInfo.ActionQty
                            End If

                            '統括コード
                            Dim errMsg As String = CCommon.msgFormat(CConst.CNS_MSG_018, readYear, readMonth, readDay, empName)
                            CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                                   Color.Black, CConst.EnumSound.ALERT_BUZZ, errMsg, Color.White)
                            task.ActionCd = "LABEL"
                            task.ProcessText = ""
                            nextState = GetNextState(task)
                            Return nextState
                        Else
                            '画面聞く
                            If CPersonal.ConfirmWindow2(pdaTask, EnumWindowMode.YESNO_MODE, Color.Black, _
                                            CConst.EnumSound.YESNO_BUZZ, CConst.CNS_MSG_043, Color.White) Then

                            Else
                                If pdaTask.CountFlg = "Y" And pdaTask.SearchBarcdInfo.ActionQty > 0 Then
                                    'ユニークコードと一緒に取り消される
                                    pdaTask.ActionQty -= pdaTask.SearchBarcdInfo.ActionQty
                                End If
                                '一旦ユニークチェックにかけてしまって
                                '次読むラベルでは間違っても許すこと
                                CCommon.FlagManage("MULTI_ORDER", False)
                                CCommon.FlagManage("SHOUGO_USED", False)
                                CPersonal.initPdaTaskSetting(pdaTask)
                                'actionボタンも消す
                                pdaTask.WindowManager.ClearActionLabel()
                                pdaTask.WindowManager.Unselect()

                                task.ActionCd = "LABEL"
                                task.ProcessText = ""
                                nextState = GetNextState(task)
                                Return nextState
                            End If
                        End If
                    Else
                        Dim uniState As CResultSet = StateDao.GetBarcdUniState(trx, barcdType)

                        If uniState.GetString("unique_state") = "Y" Then
                            If Not pdaTask.UniqueCdList.Contains(pdaTask.UniqueCd) Then
                                pdaTask.UniqueCdList.Add(pdaTask.UniqueCd)
                            Else
                                If uniState.GetString("unique_state") = "Y" Then

                                End If
                                If pdaTask.CountFlg = "Y" And pdaTask.SearchBarcdInfo.ActionQty > 0 Then
                                    'ユニークコードと一緒に取り消される
                                    pdaTask.ActionQty -= pdaTask.SearchBarcdInfo.ActionQty
                                End If
                                CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_014, Color.White)
                                '一旦ユニークチェックにかけてしまって
                                '次読むラベルでは間違っても許すこと
                                CCommon.FlagManage("MULTI_ORDER", False)
                                CCommon.FlagManage("SHOUGO_USED", False)
                                CPersonal.initPdaTaskSetting(pdaTask)
                                'actionボタンも消す
                                pdaTask.WindowManager.ClearActionLabel()
                                pdaTask.WindowManager.Unselect()

                                task.ActionCd = "LABEL"
                                task.ProcessText = ""
                                nextState = GetNextState(task)
                                Return nextState
                            End If

                        End If

                    End If
                    '存在してない場合は初期化する
                    'pdaTask.UniqueCd = ""
                End If
                'ユニークコードチェック---------------->>ユニークチョー度チェック--END



                '設定にあるパタンの検索
                'CFileLog.WriteLog("がりパタンを保存")
                Dim patternLst As ArrayList = StateDao.GetPatternNm(trx, barcdType, pdaTask.LabelCount, "2")
                If patternLst.Count = 0 Then
                    If CCommon.FlagManage("LABEL_HUKUSU") Then
                        '複数Yになってるので。。。
                        'CFileLog.WriteLog("複数ラベルを読んだ！！！")
                        pdaTask.LabelCount -= 1
                        patternLst = StateDao.GetPatternNm(trx, barcdType, pdaTask.LabelCount, "2")
                    End If
                End If

                'CFileLog.WriteLog("最初、一回データベースを検索する")
                '最初、一回データベースを検索する
                If pdaTask.OrderDataArray.Count = 0 Then
                    pdaTask.OrderDataArray = StateDao.CheckOrderData(trx, pdaTask.SearchBarcdInfo, barcdType, pdaTask.WindowManager)
                End If

                'CFileLog.WriteLog("パタンと注文のパタンと比べる")
                Dim newOrderDataArr As ArrayList = New ArrayList
                Dim newPattern As ArrayList = New ArrayList
                CFileLog.WriteLog("pdaTask.OrderDataArray.count::" & pdaTask.OrderDataArray.Count)
                For i As Integer = 0 To pdaTask.OrderDataArray.Count - 1
                    Dim shpOrderData As CPersonal.strctNowLabelState = pdaTask.OrderDataArray(i)
                    '絞ったリスト中でパタンを探す
                    'もしない場合はエラー
                    For j As Integer = 0 To patternLst.Count - 1
                        'セキスイ化成専用---START
                        If shpOrderData.OrderType = "" OrElse ((shpOrderData.OrderType = patternLst(j) OrElse "S005" = patternLst(j)) _
                                                               AndAlso pdaTask.SysitemCd = shpOrderData.SysItemCd) Then

                            If (CPersonal.HicacuInvoice(shpOrderData.InvoiceCd, pdaTask.InvoiceCd, shpOrderData)) _
                                        OrElse (CPersonal.Hicacu(shpOrderData.SubInvoiceCd1, pdaTask.SubinvoiceCd1)) _
                                        OrElse (CPersonal.Hicacu(shpOrderData.SubInvoiceCd2, pdaTask.SubinvoiceCd2)) _
                                        OrElse (CPersonal.Hicacu(shpOrderData.SubInvoiceCd3, pdaTask.SubinvoiceCd3)) _
                                        OrElse (CPersonal.Hicacu(shpOrderData.SubInvoiceCd4, pdaTask.SubinvoiceCd4)) Then
                                'セキスイ化成専用---END

                                newOrderDataArr.Add(shpOrderData)
                                newPattern.Add(patternLst(j))
                                'Exit For
                            End If
                        Else

                        End If
                    Next
                Next

                '一致するパタンがないエラー
                If newOrderDataArr.Count = 0 Then
                    CFileLog.WriteLog("注文から一致するパタンがないエラー!!!!!!")
                    'エラー->設定ファイルによってエラー表示
                    If AppManager.m_AppSetting.ErrorChk Then
                        CPersonal.ErrorProc(pdaTask, CConst.CNS_MSG_056)

                        'CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                        '                    Color.White, CConst.EnumSound.ERR_BUZZ, CConst.CNS_MSG_056, Color.Red)
                        'Debug.WriteLine("エラー表示02")
                        'CPersonal.ErrorLock2(pdaTask)
                        'エラーになったら全部照合中のデータは全部戻す（初期化）
                    Else
                        CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                            Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_056, Color.White)
                        'CPersonal.ErrorLock2Release(pdaTask)
                    End If
                    'Debug.WriteLine("LABEL_CHECK")
                    task.ActionCd = "LABEL"
                    task.ProcessText = ""
                    nextState = GetNextState(task)
                    Return nextState
                Else
                    If pdaTask.PatternList.Count = 0 Then
                        ' CFileLog.WriteLog("PDA_TASKにPdatask.PatternListに保存")
                        pdaTask.PatternList = newPattern
                    Else
                        ' CFileLog.WriteLog("Pdatask.PatternListとnewOrder比べる")
                        Dim retFlg As Boolean = True
                        For i As Integer = 0 To pdaTask.PatternList.Count - 1
                            Dim pdaPattern As String = pdaTask.PatternList(i)
                            For j As Integer = 0 To newPattern.Count - 1
                                If pdaPattern = newPattern(j) Then
                                    retFlg = False
                                    ' CFileLog.WriteLog("Pdatask.PatternListをnewOrderに変更")
                                    pdaTask.PatternList = newPattern
                                    Exit For
                                End If
                            Next
                            If Not retFlg Then
                                Exit For
                            End If
                        Next

                        If retFlg Then
                            'エラー一致するパタンが無い
                            'エラー->設定ファイルによってエラー表示
                            CFileLog.WriteLog("パタンから一致するパタンがないエラー!!!!!!")
                            If AppManager.m_AppSetting.ErrorChk Then
                                'CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                '                    Color.White, CConst.EnumSound.ERR_BUZZ, CConst.CNS_MSG_056, Color.Red)
                                CPersonal.ErrorProc(pdaTask, CConst.CNS_MSG_056)

                                'Debug.WriteLine("エラー表示02")
                                'CPersonal.ErrorLock2(pdaTask)
                                'エラーになったら全部照合中のデータは全部戻す（初期化）
                            Else
                                CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                                    Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_056, Color.White)
                                'CPersonal.ErrorLock2Release(pdaTask)
                            End If
                            'Debug.WriteLine("LABEL_CHECK")
                            task.ActionCd = "LABEL"
                            task.ProcessText = ""
                            nextState = GetNextState(task)
                            Return nextState
                        End If
                    End If
                End If


                '自動受信したデータで検索して見て
                'データが存在するかどうか見る
                If pdaTask.OrderDataArray.Count = 0 Then
                    'エラー
                    ' CFileLog.WriteLog("一致するデータが無い、読んだラベル：" & task.ProcessText)
                    'エラー->設定ファイルによってエラー表示
                    If AppManager.m_AppSetting.ErrorChk Then
                        'CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                        '                    Color.White, CConst.EnumSound.ERR_BUZZ, CConst.CNS_MSG_034, Color.Red)
                        'CPersonal.ErrorLock2(pdaTask)
                        CPersonal.ErrorProc(pdaTask, CConst.CNS_MSG_034)
                        'エラーになったら全部照合中のデータは全部戻す（初期化）
                    Else
                        CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                            Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_007, Color.White)
                        'CPersonal.ErrorLock2Release(pdaTask)
                    End If
                Else
                    '自動受信したデータの中に一致するデータが存在---------------------->>>>>>>>>>>>-------------START

                    '照合中Flag
                    CCommon.FlagManage("SHOUGO_USED", True)
                    'CFileLog.WriteLog("バーコード保存--STARAT")
                    'バーコード保存場所------->--->--->--->--->--->--->--->--->--->--->>>START

                    CPersonal.SaveLabelInfo(pdaTask, barcdType, task.ProcessText)

                    'バーコード保存場所---------->--->--->--->--->--->--->--->--->--->>>>END
                    'CFileLog.WriteLog("バーコード保存--END")

                    'パタンが複数の場合
                    Dim nextNm As ArrayList = New ArrayList
                    'actionボタンも消す
                    pdaTask.WindowManager.ClearActionLabel()

                    ' CFileLog.WriteLog("パタンが複数の場合--開始時間")
                    '次読むべきのラベルを下に表示する----------------------------------->>>>>>>>>>>START

                    '一度確認のため
                    CCommon.FlagManage("MULTI_ORDER", False)

                    For i As Integer = 0 To pdaTask.PatternList.Count - 1
                        Dim patternNm As String = pdaTask.PatternList(i)
                        'CFileLog.WriteLog("patternNm''''''::" & patternNm)
                        'CFileLog.WriteLog("pdaTask.LabelCount + 1''''''::" & pdaTask.LabelCount + 1)
                        Dim nextCResult As CResultSet = StateDao.GetNextCResult(trx, patternNm, pdaTask.LabelCount + 1)
                        Dim nowCResult As CResultSet = StateDao.GetNextCResult(trx, patternNm, pdaTask.LabelCount)
                        Dim result As String = nextCResult.GetString("label_type")
                        'CFileLog.WriteLog("result''''''::" & result)
                        'Dim barNm As String = StateDao.GetBarcdName(trx, result)
                        If result = "" Then
                            result = "完了"
                            CCommon.FlagManage("LABEL_OK", True)
                        End If

                        If Not nextNm.Contains(result) Then
                            'result = result '"次のラベルを読んでください。"
                            nextNm.Add(result)
                            '次読むラベルのボタンを表示
                            If result = "完了" Then
                                'pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_042, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                                CCommon.FlagManage("MULTI_ORDER", True)

                                pdaTask.addWindowLabelBox(result, 4)
                            Else
                                pdaTask.addWindowLabelBox(result, 1)
                            End If
                        End If
                    Next

                    'CFileLog.WriteLog("パタンが複数の場合--終了時間")
                    '次読むべきのラベルを下に表示する----------------------------------->>>>>>>>>>>END

                    'データがある場合パタンを探して見る
                    '複数の場合は選択するようにする
                    ''修正12.25日----START
                    'If pdaTask.OrderDataArray.Count > 1 Then
                    ''修正12.25日----END
                    If pdaTask.OrderDataArray.Count > 1 And newOrderDataArr.Count > 1 Then
                        pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_058, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                        'CFileLog.WriteLog("WindowManager.AddRecord保存--STARAT")
                        'リスト画面表示
                        pdaTask.WindowManager.ChangeWindowMode(EnumWindowMode.REPORTLIST_MODE)
                        pdaTask.WindowManager.BeginUpdateRecord()
                        If pdaTask.WindowManager.GetReportRecordCount > 0 Then
                            '全部削除
                            '絞ったリストを消す
                            Dim delRecord As ArrayList = New ArrayList()
                            For i As Integer = 0 To pdaTask.WindowManager.GetReportRecordCount - 1
                                Dim shpOrderData As COrderRecord = pdaTask.WindowManager.GetReportRecord(i)
                                delRecord.Add(shpOrderData)
                            Next
                            For j As Integer = 0 To delRecord.Count - 1
                                pdaTask.WindowManager.DelRecord(delRecord(j), True)
                            Next
                        End If

                        '重複リストアップする------->>>START
                        For i As Integer = 0 To pdaTask.OrderDataArray.Count - 1
                            Dim addRecord As COrderRecord = pdaTask.WindowManager.CreateReportRecord
                            Dim retResult As CPersonal.strctNowLabelState = pdaTask.OrderDataArray(i)
                            addRecord.ShiporderCd = retResult.ShipOrderCd
                            addRecord.RowNum = retResult.RowNum
                            addRecord.OrderCd = retResult.OrderCd
                            addRecord.InvoiceCd = retResult.InvoiceCd
                            addRecord.SysItemCd = retResult.SysItemCd
                            addRecord.ItemCd = retResult.ItemCd
                            addRecord.ItemName = retResult.ItemName
                            addRecord.ShiporderQty = retResult.ShiporderQty
                            addRecord.OrderQty = retResult.OrderQty
                            'addRecord.ActionQty = retResult.ActionQty 'StateDao.GetOrderData(trx, retResult.OrderCd)   'データベースで探す
                            ' CFileLog.WriteLog("エラー落ちるかもー０９")
                            addRecord.ActionQty = StateDao.GetOrderData(trx, retResult.OrderCd)   'データベースで探す
                            '条件で合うものだけリスト状に表示させる
                            pdaTask.WindowManager.AddRecord(addRecord)
                        Next
                        pdaTask.WindowManager.EndUpdateRecord()

                        'CFileLog.WriteLog("WindowManager.AddRecord保存--END")
                        pdaTask.WindowManager.Set_m_ReportSelectIndex()

                        '重複リストアップする------->>>END

                        '完了のみ
                        If CCommon.FlagManage("MULTI_ORDER") Then
                            pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_042, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                            task.ProcessText = task.ReadTextWait(-1)
                            Dim doloopFlg As Boolean = True
                            Dim test As Integer = 0
                            Do
                                test += 1
                                If CConst.CNS_IS_SELECT.Equals(task.ProcessText) Or (Not task.ProcessText = CConst.CNS_CLR And Not task.ProcessText.StartsWith(CConst.CNS_ORDERCD_HEAD)) Then
                                    'CFileLog.WriteLog("街街街街、、、、task.ProcessText:" & task.ProcessText)
                                    pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_042, CConst.COLOR_WHITE, CConst.COLOR_RED)
                                    pdaTask.Hardware.vib()
                                    task.ProcessText = task.ReadTextWait(-1)
                                End If

                                '機能追加 10.09.03 修正-------START---LEE
                                '絞るリストを取り消し
                                If task.ProcessText = CConst.CNS_CLR Then
                                    '初期化
                                    pdaTask.WindowManager.SetMessage(CConst.CNS_MSG_031, CConst.COLOR_BLACK, CConst.COLOR_GREEN)
                                    'pdaTask.WindowManager.ChangeWindowMode(prevWindowMode)
                                    pdaTask.OrderCd = ""
                                    pdaTask.NowOrderDataList.Clear()
                                    pdaTask.PatternList.Clear()
                                    'pdaTask.LabelQty = 0

                                    '記憶した内容全部消す
                                    CPersonal.initPdaTaskSetting(pdaTask)
                                    'リスト画面に戻る
                                    pdaTask.WindowManager.ChangeWindowMode(EnumWindowMode.LIST_MODE)
                                    'actionボタンも消す
                                    pdaTask.WindowManager.ClearActionLabel()

                                    task.ActionCd = "LABEL"
                                    task.ProcessText = ""
                                    nextState = GetNextState(task)
                                    Return nextState
                                End If
                                '機能追加 10.09.03 修正-------END---LEE

                                'リストから選んだらODR-で注文番号が来る
                                If task.ProcessText.StartsWith(CConst.CNS_ORDERCD_HEAD) Then
                                    'ODR-を削除して注文番号を設定する
                                    task.ProcessText = task.ProcessText.Replace(CConst.CNS_ORDERCD_HEAD, "")
                                    '注文番号
                                    pdaTask.OrderCd = task.ProcessText
                                    Dim orderFlg As Boolean = False
                                    For f As Integer = 0 To pdaTask.WindowManager.GetReportRecordCount - 1
                                        Dim shpOrderData As COrderRecord = pdaTask.WindowManager.GetReportRecord(f)
                                        If pdaTask.OrderCd = shpOrderData.OrderCd Then
                                            pdaTask.ShiporderCd = shpOrderData.ShiporderCd
                                            pdaTask.RowNum = shpOrderData.RowNum
                                            pdaTask.ShiporderQty = shpOrderData.ShiporderQty
                                            pdaTask.SysitemCd = shpOrderData.SysItemCd
                                            pdaTask.ItemCd = shpOrderData.ItemCd
                                            pdaTask.ItemName = shpOrderData.ItemName
                                            pdaTask.ReportCd = shpOrderData.ReportCd
                                            pdaTask.InvoiceCd = shpOrderData.InvoiceCd
                                            'MessageBox.Show("pdaTask.OrderCd:" & shpOrderData.OrderCd)
                                            orderFlg = True
                                            Exit For
                                        End If
                                    Next
                                    'エラー
                                    If Not orderFlg Then
                                        'MessageBox.Show("エラー")
                                        If AppManager.m_AppSetting.ErrorChk Then
                                            'MessageBox.Show("22-4")
                                            'CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                            '                    Color.White, CConst.EnumSound.ERR_BUZZ, CConst.CNS_MSG_034, Color.Red)
                                            'CPersonal.ErrorLock2(pdaTask)
                                            CPersonal.ErrorProc(pdaTask, CConst.CNS_MSG_034)
                                            'エラーになったら全部照合中のデータは全部戻す（初期化）
                                        Else
                                            CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                                                Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_007, Color.White)
                                            'CPersonal.ErrorLock2Release(pdaTask)
                                        End If
                                        task.ActionCd = "LABEL"
                                        'actionボタンも消す
                                        pdaTask.WindowManager.ClearActionLabel()

                                        task.ProcessText = ""
                                        nextState = GetNextState(task)
                                        Return nextState
                                    Else
                                        ' CFileLog.WriteLog("エラー落ちるかもー１０")
                                        Dim totalActionQty As Integer = pdaTask.ActionQty + StateDao.GetOrderData(trx, pdaTask.OrderCd)
                                        If pdaTask.ShiporderQty >= totalActionQty Then

                                            task.ActionCd = "INNER_LABEL"
                                            pdaTask.MsgText = ""
                                            '完全に照合成功
                                            pdaTask.Hardware.nextC()
                                            'actionボタンも消す
                                            pdaTask.WindowManager.ClearActionLabel()
                                            pdaTask.WindowManager.ChangeWindowMode(EnumWindowMode.LIST_MODE)

                                            'レポートリスト削除
                                            '絞ったリストを消す
                                            Dim delRecord As ArrayList = New ArrayList()
                                            For i As Integer = 0 To pdaTask.WindowManager.GetReportRecordCount - 1
                                                Dim shpOrderData As COrderRecord = pdaTask.WindowManager.GetReportRecord(i)
                                                delRecord.Add(shpOrderData)
                                            Next
                                            For j As Integer = 0 To delRecord.Count - 1
                                                pdaTask.WindowManager.DelRecord(delRecord(j), True)
                                            Next

                                            CCommon.FlagManage("SHOUGO_USED", False)
                                            CCommon.FlagManage("MULTI_ORDER", False)
                                            nextState = GetNextState(task)
                                            Return nextState

                                        Else
                                            '設定で警告するであればYES or NOの警告
                                            If AppManager.m_AppSetting.OverCountMsg Then
                                                If CPersonal.ConfirmWindow2(pdaTask, EnumWindowMode.YESNO_MODE, Color.Black, _
                                                                    CConst.EnumSound.YESNO_BUZZ, CConst.CNS_MSG_059, Color.White) Then

                                                    pdaTask.WindowManager.ChangeWindowMode(EnumWindowMode.LIST_MODE)

                                                    task.ActionCd = "INNER_LABEL"
                                                    pdaTask.MsgText = ""
                                                    '完全に照合成功
                                                    pdaTask.Hardware.nextC()
                                                    'actionボタンも消す
                                                    pdaTask.WindowManager.ClearActionLabel()

                                                    'レポートリスト削除
                                                    '絞ったリストを消す
                                                    Dim delRecord As ArrayList = New ArrayList()
                                                    For i As Integer = 0 To pdaTask.WindowManager.GetReportRecordCount - 1
                                                        Dim shpOrderData As COrderRecord = pdaTask.WindowManager.GetReportRecord(i)
                                                        delRecord.Add(shpOrderData)
                                                    Next
                                                    For j As Integer = 0 To delRecord.Count - 1
                                                        pdaTask.WindowManager.DelRecord(delRecord(j), True)
                                                    Next

                                                    CCommon.FlagManage("SHOUGO_USED", False)
                                                    CCommon.FlagManage("MULTI_ORDER", False)
                                                    nextState = GetNextState(task)
                                                    Return nextState

                                                Else

                                                    pdaTask.WindowManager.ChangeWindowMode(EnumWindowMode.LIST_MODE)

                                                    '読んだものをメモリから削除
                                                    '1. メモリのユニークコード保存場所の削除
                                                    '2. バーコードそのものを保存場所の削除
                                                    pdaTask.UniqueCdList.Remove(pdaTask.UniqueCd)
                                                    pdaTask.NowOrderDataList.RemoveAt(pdaTask.NowOrderDataList.Count - 1)
                                                    pdaTask.ActionQty = 0

                                                    'レポートリスト削除
                                                    '絞ったリストを消す
                                                    Dim delRecord As ArrayList = New ArrayList()
                                                    For i As Integer = 0 To pdaTask.WindowManager.GetReportRecordCount - 1
                                                        Dim shpOrderData As COrderRecord = pdaTask.WindowManager.GetReportRecord(i)
                                                        delRecord.Add(shpOrderData)
                                                    Next
                                                    For j As Integer = 0 To delRecord.Count - 1
                                                        pdaTask.WindowManager.DelRecord(delRecord(j), True)
                                                    Next

                                                    task.ActionCd = "LABEL"
                                                    task.ProcessText = ""
                                                    'actionボタンも消す
                                                    pdaTask.WindowManager.ClearActionLabel()
                                                    CCommon.FlagManage("ORDER_COMMIT", False)

                                                End If
                                            Else
                                                'エラー
                                                CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                                              Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_019, Color.White)

                                                pdaTask.WindowManager.ChangeWindowMode(EnumWindowMode.LIST_MODE)
                                                '読んだものをメモリから削除
                                                '1. メモリのユニークコード保存場所の削除
                                                '2. バーコードそのものを保存場所の削除
                                                pdaTask.UniqueCdList.Remove(pdaTask.UniqueCd)
                                                pdaTask.NowOrderDataList.Remove(pdaTask.NowOrderDataList.Count - 1)
                                                pdaTask.ActionQty = 0

                                                'レポートリスト削除
                                                '絞ったリストを消す
                                                Dim delRecord As ArrayList = New ArrayList()
                                                For i As Integer = 0 To pdaTask.WindowManager.GetReportRecordCount - 1
                                                    Dim shpOrderData As COrderRecord = pdaTask.WindowManager.GetReportRecord(i)
                                                    delRecord.Add(shpOrderData)
                                                Next
                                                For j As Integer = 0 To delRecord.Count - 1
                                                    pdaTask.WindowManager.DelRecord(delRecord(j), True)
                                                Next

                                                '選択されたすぐ、照合する
                                                If CCommon.FlagManage("ORDER_COMMIT") Then
                                                    'actionボタンも消す
                                                    pdaTask.WindowManager.ClearActionLabel()
                                                    CCommon.FlagManage("ORDER_COMMIT", False)
                                                End If
                                                task.ActionCd = "LABEL"
                                                task.ProcessText = ""
                                            End If
                                        End If

                                        nextState = GetNextState(task)
                                        Return nextState

                                        Exit Do
                                    End If
                                End If
                            Loop

                        End If

                    ElseIf pdaTask.OrderDataArray.Count = 1 Or newOrderDataArr.Count = 1 Then
                        'すぐ選択するようにする
                        Dim shpOrderData As CPersonal.strctNowLabelState = New CPersonal.strctNowLabelState
                        If newOrderDataArr.Count = 1 Then
                            shpOrderData = newOrderDataArr(0)
                            '  CFileLog.WriteLog("newOrderDataArr(0)::" & shpOrderData.OrderCd)
                        Else
                            shpOrderData = pdaTask.OrderDataArray(0)
                            '  CFileLog.WriteLog("pdaTask.OrderDataArray(0)::" & shpOrderData.OrderCd)
                        End If

                        '自動受信データから選択はされる
                        'Dim shpOrderData As CPersonal.strctNowLabelState = pdaTask.OrderDataArray(0)

                        pdaTask.OrderCd = shpOrderData.OrderCd
                        pdaTask.ShiporderCd = shpOrderData.ShipOrderCd
                        pdaTask.RowNum = shpOrderData.RowNum
                        pdaTask.ShiporderQty = shpOrderData.ShiporderQty
                        pdaTask.SysitemCd = shpOrderData.SysItemCd
                        pdaTask.ItemCd = shpOrderData.ItemCd
                        pdaTask.ItemName = shpOrderData.ItemName
                        pdaTask.ReportCd = shpOrderData.ReportCd
                        pdaTask.InvoiceCd = shpOrderData.InvoiceCd

                        pdaTask.Record1 = shpOrderData.Record1
                        pdaTask.Record2 = shpOrderData.Record2
                        pdaTask.Record2 = shpOrderData.Record3

                        pdaTask.SubinvoiceCd1 = shpOrderData.SubInvoiceCd1
                        pdaTask.SubinvoiceCd2 = shpOrderData.SubInvoiceCd2
                        pdaTask.SubinvoiceCd3 = shpOrderData.SubInvoiceCd3
                        pdaTask.SubinvoiceCd4 = shpOrderData.SubInvoiceCd4

                        'MessageBox.Show("pdaTask.ActionQty:" & pdaTask.ActionQty)
                        'MessageBox.Show("DB_actionQty:" & StateDao.GetOrderData(trx, shpOrderData.OrderCd))
                        'CFileLog.WriteLog("エラー落ちるかもー１１")
                        Dim totalActionQty As Integer = pdaTask.ActionQty + StateDao.GetOrderData(trx, shpOrderData.OrderCd)

                        '他のラベルを読むか終わるか
                        If nextNm.Count = 1 Then

                            '次読むものが無い → すぐ、COMMIT
                            If CCommon.FlagManage("MULTI_ORDER") And pdaTask.WindowManager.GetAddActionLabelCnt = 1 Then
                                'AUTOコミットの修正---->>>END

                                'そのままCOMMIT
                                Dim retCommit As Boolean = True
                                If shpOrderData.ShiporderQty >= totalActionQty Then

                                Else
                                    '設定で警告するであればYES or NOの警告
                                    If AppManager.m_AppSetting.OverCountMsg Then
                                        If CPersonal.ConfirmWindow2(pdaTask, EnumWindowMode.YESNO_MODE, Color.Black, _
                                                            CConst.EnumSound.YESNO_BUZZ, CConst.CNS_MSG_059, Color.White) Then

                                        Else
                                            '読んだものをメモリから削除
                                            '1. メモリのユニークコード保存場所の削除
                                            '2. バーコードそのものを保存場所の削除
                                            pdaTask.UniqueCdList.Remove(pdaTask.UniqueCd)
                                            pdaTask.NowOrderDataList.RemoveAt(pdaTask.NowOrderDataList.Count - 1)
                                            pdaTask.ActionQty = 0

                                            'actionボタンも消す
                                            pdaTask.WindowManager.ClearActionLabel()
                                            CCommon.FlagManage("ORDER_COMMIT", False)

                                            retCommit = False
                                        End If
                                    Else
                                        'エラー
                                        CPersonal.ErrorWindow2(pdaTask, EnumWindowMode.ALERT_MODE, _
                                                      Color.Black, CConst.EnumSound.ALERT_BUZZ, CConst.CNS_MSG_019, Color.White)

                                        '読んだものをメモリから削除
                                        '1. メモリのユニークコード保存場所の削除
                                        '2. バーコードそのものを保存場所の削除
                                        pdaTask.UniqueCdList.Remove(pdaTask.UniqueCd)
                                        pdaTask.NowOrderDataList.Remove(pdaTask.NowOrderDataList.Count - 1)
                                        pdaTask.ActionQty = 0

                                        '選択されたすぐ、照合する
                                        If CCommon.FlagManage("ORDER_COMMIT") Then
                                            'actionボタンも消す
                                            pdaTask.WindowManager.ClearActionLabel()
                                            CCommon.FlagManage("ORDER_COMMIT", False)
                                        End If

                                    End If

                                End If

                                If retCommit Then

                                    task.ActionCd = "INNER_LABEL"
                                    pdaTask.MsgText = ""
                                    '完全に照合成功
                                    pdaTask.Hardware.nextC()
                                    'actionボタンも消す
                                    pdaTask.WindowManager.ClearActionLabel()
                                    nextState = GetNextState(task)

                                    CCommon.FlagManage("MULTI_ORDER", False)
                                    CCommon.FlagManage("SHOUGO_USED", False)

                                    Return nextState

                                Else
                                    'キャンセルしたから同一種類のラベルを読むため
                                    Dim lblCountFlg As CResultSet = StateDao.GetNextCResult(trx, pdaTask.PatternList(0), pdaTask.LabelCount)
                                    Dim result As String = lblCountFlg.GetString("label_type")
                                    If Not result = "" Then
                                        pdaTask.addWindowLabelBox(result, 1)
                                    End If
                                    'ラベルカウントする
                                    pdaTask.LabelCount -= 1
                                End If

                            Else
                                Dim lblCountFlg As CResultSet = StateDao.GetNextCResult(trx, pdaTask.PatternList(0), pdaTask.LabelCount)
                                Dim result As String = lblCountFlg.GetString("label_type")

                                '現在読んだラベルの複数フラグが
                                '複数フラグが立てれば
                                If lblCountFlg.GetString("lbl_count") = "Y" Then
                                    CCommon.FlagManage("LABEL_HUKUSU", True)
                                    If Not nextNm.Contains(lblCountFlg.GetString("label_type")) Then
                                        nextNm.Add(lblCountFlg.GetString("label_type"))
                                        pdaTask.addWindowLabelBox(result, 1)
                                    End If
                                End If

                            End If
                        End If
                        '自動的にページに移動する
                        'CFileLog.WriteLog("自動的にページ--START時間")
                        Dim pageLogic As Boolean = True
                        For i As Integer = 0 To pdaTask.WindowManager.GetRecordCount - 1
                            Dim recordBean As COrderRecord = pdaTask.WindowManager.GetRecord(i)
                            If recordBean.OrderCd = shpOrderData.OrderCd Then
                                'CFileLog.WriteLog("recordBean.OrderCd::" & recordBean.OrderCd)
                                SyncLock pdaTask.SendLockObject
                                    CFileLog.WriteLog("shpOrderData.OrderCd::" & shpOrderData.OrderCd)
                                    pdaTask.WindowManager.SelectOrder(recordBean.OrderCd)
                                End SyncLock
                                

                                pageLogic = False
                                Exit For
                            End If
                            pageLogic = True
                        Next
                        If pageLogic Then
                            '  CFileLog.WriteLog("pageLogic::pageLogic:::TRUE")
                            'CFileLog.WriteLog("recordBean.TRUE::" & shpOrderData.OrderCd)
                            SyncLock pdaTask.SendLockObject
                                pdaTask.WindowManager.SetPage(shpOrderData.OrderCd)
                            End SyncLock
                        End If
                        'Dim pageId As Integer = StateDao.GetPageId(trx, shpOrderData.OrderCd)
                        'CFileLog.WriteLog("自動的にページ--END時間")
                        task.ActionCd = "LABEL"
                        task.ProcessText = ""
                    End If

                End If
                '自動受信したデータの中に一致するデータが存在---------------------->>>>>>>>>>>>-------------END
            End If

            'ラベルカウントする
            pdaTask.LabelCount += 1
            'MessageBox.Show("END_Count:" & pdaTask.LabelCount)
        Catch ex As Exception
            CFileLog.WriteLog("LABEL_CHECK-エラー：" & ex.Message)
        End Try

        task.ProcessText = ""
        task.ActionCd = "LABEL"
        nextState = GetNextState(task)
        Return nextState
    End Function

    ''' <summary>
    ''' 終了メソッド(未使用)
    ''' </summary>
    ''' <param name="task"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function DoExit(ByVal task As CTaskBase) As Boolean
        Debug.WriteLine("CLabelCheckState.DoExit")
        Return True
    End Function


End Class
